Software development usually consists of several phases, including but not limited to, conception of the idea, software design, coding, debugging and testing. After the idea is presented, software designed, and coding is finished, the program is run in a debugging environment to determine the possible errors associated with its execution. The error information can be generated by trace points located in several different sections of the software. When an error is found, the debugging software, or the person in charge of the debugging task, uses error data gathered from different sections of the software, to investigate what might be causing the error. Before the debugger unit or person can fully benefit this data, it needs to be stored on a storage device. In large software systems specially when running on large computer systems comprising numerous internal or external devices, numerous trace points are needed, hence, a large volume rate of error data is generated. Due to a usually fixed or limited space available for error data, most of this data is eventually overwritten by newer error information. In addition, a system slowdown caused by larger buffer sizes for saving such information can be both uneconomical and detrimental to the operation of the debugger by slowing down the system and as a result, eliminating the show up of some time-sensitive errors. On the other hand, the overwritten information can sometimes prove invaluable in debugging tasks especially when a complex software unit needs to be monitored for some longer time, by the debugger, to determine the causes of the error more precisely. Therefore, a method to store most of the error data useful for debugging over a wider time-span to eliminate the need for error recreation, while preventing system slow down, and without using possibly expensive large-capacity storage devices, is an attractive solution to the problem.